今天的內容一樣是代辦清單的實作,要將元件與程式碼做連結, 並且開始操作『Realm』。
現在,我們馬上開始!
如果要回復一個畫面,請點選『Show Editor Only』
通常Outlet都是會針對屬性去設定或取值
而Action都是會觸發動作的,例如按鈕點擊 (如下圖)
class ToDoList: Object {
@objc private(set) dynamic var id:String = UUID().uuidString
@objc dynamic var content:String = ""
@objc dynamic var startTime:Date = Date()
@objc dynamic var endTime:Date? = nil
@objc dynamic var category:String = "work"
@objc dynamic var status:String = "\(Status.ongoing)"
@objc dynamic var LastModify:Date = Date()
// primary key
override static func primaryKey() -> String {
return "id"
}
}
enum Status {
case ongoing, done, deleted
}
使用UUID().uuidString 『id』作為主鍵
定義一個enum用來存放狀態,目前有三種
@IBAction func addButtonPressed(_ sender: UIButton) {
guard let content = taskTextField.text else { return }
if !content.isEmpty {
let realm = try! Realm()
let todoList = ToDoList()
todoList.content = content
try! realm.write {
realm.add(todoList)
}
// return List
navigationController?.popViewController(animated: true)
}
}
使用一個realm實例來新增資料,後續有空重構時,可以改用singleton pattern
轉換回原場景使用navigationController?.popViewController()方法
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let realm = try! Realm()
let todoList = realm.objects(ToDoList.self)
for todo in todoList {
print(todo)
}
}
// Get our Realm file's parent directory
let folderPath = realm.configuration.fileURL!.deletingLastPathComponent().path
print(folderPath)
首先將路徑複製起來,並在終端機使用『cd 路徑』切換到該路徑,接者輸入『open .』來打開Finder
請先確認有安裝 Realm Studio 工具軟體 (ref6)
直接點兩下開啟該文件
今天我們練習了,如何建立Realm的Model,並寫入測試資料,以及如何透過Realm Studio,來讀取模擬器中的資料庫。發現其實官方文件的用法與各種操作,已經寫得非常詳細與清楚。
而資料表的設計一開始在考慮使用一直加一的id主健(ref5),後來直接使用UID().uuidStringUID。
明天的文章將會繼續實作List & Edit的資料。
今天的內容就到這邊,感謝讀者們的閱讀。
https://github.com/chiron-wang/IT30_11
深入淺出 iPhone 開發 (使用 Swift4) - WeiWei
https://www.udemy.com/course/iphone-swift4/
iOS 12 App 開發快速入門與實戰(繁體中文)
https://www.udemy.com/course/ios-12-app/
心智圖軟體Xmind
https://www.xmind.net/
[Realm]
[Swift] Realm.io 資料庫介紹 - 其之一:初探CRUD
https://ithelp.ithome.com.tw/articles/10183329
Auto increment ID in Realm, Swift 3.0
https://stackoverflow.com/questions/39579025/auto-increment-id-in-realm-swift-3-0
Realm Studio
https://realm.io/docs/swift/latest/#realm-studio